package com.huluobo.hyj.hyjmodel.ui.activity

import android.app.ProgressDialog
import android.content.Context
import android.os.Bundle
import android.view.inputmethod.InputMethodManager
import androidx.appcompat.app.AppCompatActivity

/**
 * 作用分装公共的功能和方法，减少代码量，利于项目的扩展，如果我需要给每个activity都添加
 * 摇一摇功能，如果不舒勇基类，每个activity都需要添加一段摇一摇的代码，既增加代码又不利用
 * */
abstract class BaseActivity :AppCompatActivity(){

    //懒加载
    //相当于android中的new 对象
    // lazy 代表当前使用该对象才会进行初始化，当没有指向性时，该对象可能会被摧毁
    val progressDialog by lazy {
        ProgressDialog(this)
    }
    //声明一个
    private val inputMethodManager by lazy {
        getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(getLayoutResId()) //加载布局 传入一个布局
        init() //初始化 控件公共的功能
    }

    open fun init() {
        //初始化一些公共的功能,比如摇一摇,子类可以复写,完整自己的初始化
    }

    //子类必须实现该方法返回一个布局资源ID
    abstract fun getLayoutResId(): Int


    fun  showProgress(message: String){
        progressDialog.setMessage(message) //进度条的值设置
        progressDialog.show() //显示进度条
    }

    fun dismissProgress(){
        progressDialog.dismiss() //取消进度条
    }

    //隐藏软键盘
    fun hideSoftKeyboard(){
        inputMethodManager.hideSoftInputFromWindow(currentFocus?.windowToken,0)
    }

}